// 项目介绍：背景、功能/模块、技术栈、周期
// 项目周期和你负责的模块所消耗的时间对应上

// 登录：收集数据 -> 前端（数据校验） -> 把数据提交到后端 -> 后端（数据校验）返回 TOKEN -> 设置到本地（持久化）并同步到 Vuex（方便获取和响应式）

// 难点：权限
// 1. 用户登录成功之后，后端返回当前用户的权限标识
// 2. 前端根据后端返回的权限标识筛选出有权限的路由
// 3. 筛选出来之后主要做了 2 件事情
// 第一件事情把筛选出来的动态路由通过 addRoutes 添加到路由实例，目的：能够通过地址栏来访问
// 第二件事件把筛选出来的动态路由添加到 Vuex 中，目的：给菜单栏使用

// 界面访问控制
// 在全局前置导航守卫里面做判断，如果有 token，就直接放行，如果没有 token 并且访问的不是登录页直接跳转到登录页

// Axios 怎么用的
// utils/request.js 封装 axios => api 引入封装的 axios，封装请求函数，返回 Promise => 在组件里面引入请求函数，调用拿到结果
// Axios 封装了哪些东西？创建了一个请求实例、baseURL、timeout、请求拦截器（统一携带 TOKEN、全局的进度条、TOKEN 的超时处理）、响应拦截器（统一错误处理）
